﻿/*
 * Copyright 2014 Francois Karman
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Quartz.WebManager.Model
{
    /// <summary>
    /// Tests the <see cref="CronExpressionAttribute"/> class.
    /// </summary>
    [TestClass]
    public class CronExpressionAttributeTest
    {
        /// <summary>
        /// Tests the <see cref="CronExpressionAttribute.RequiresValidationContext"/> property.
        /// </summary>
        [TestMethod]
        public void RequiresValidationContext()
        {
            CronExpressionAttribute instance = new CronExpressionAttribute();
            Assert.IsFalse(instance.RequiresValidationContext);
        }

        /// <summary>
        /// Tests the <see cref="CronExpressionAttribute.FormatErrorMessage"/> method.
        /// </summary>
        [TestMethod]
        public void FormatErrorMessage()
        {
            CronExpressionAttribute instance = new CronExpressionAttribute();
            string actual = instance.FormatErrorMessage("test name");
            Assert.IsNotNull(actual);
            StringAssert.Contains(actual, "test name");
        }

        /// <summary>
        /// Tests the <see cref="CronExpressionAttribute.IsValid"/> method.
        /// </summary>
        [TestMethod]
        public void IsValid()
        {
            CronExpressionAttribute instance = new CronExpressionAttribute();

            Assert.IsTrue(instance.IsValid(null));
            Assert.IsTrue(instance.IsValid(string.Empty));
            Assert.IsFalse(instance.IsValid(10));

            Assert.IsTrue(instance.IsValid("5 * * * * ?"));
            Assert.IsTrue(instance.IsValid("10 * * * * ? 2014"));
        }
    }
}
